package cn.biplam.common.wrapper;

/**
 * 数据集访问功能接口 <br>
 * 用途：  用于迭代访问数据集<br>
 * <ul>
 * <li>创建数据集时，光标被置于第一行之前。
 * <li>next 方法将光标移动到下一行；在 while 循环中使用next来迭代结果集。
 * <li>使用get方法访问数据集每个字段的值。
 * </ul>
 * @author XiaoRuxing 2009-6-20下午02:32:24
 * @version 1.0
 */
public interface  Result {

	/**
	 * 获取当前行中指定列的字符值，列下标从0开始 
	 * @param iColIndex 列下标
	 * @return 指定列的值
	 * @throws ErrorMessage
	 */
	public String getString(int iColIndex) throws ErrorMessage;
	
	/**
	 * 获取当前行中指定列的字符值 
	 * @param sColumnName 列名
	 * @return 指定列的值
	 * @throws ErrorMessage
	 */
	public String getString(String sColumnName) throws ErrorMessage;
	
	/**
	 * 获取当前行中指定列的整数值，列下标从0开始 
	 * @param iColumnIndex 列下标
	 * @return 指定列的值
	 * @throws ErrorMessage
	 */
	public int getInt(int iColumnIndex) throws ErrorMessage;
	
	/**
	 * 获取当前行中指定列的整数值 
	 * @param sColumnName 列名
	 * @return 指定列的值
	 * @throws ErrorMessage 
	 */
	public int getInt(String sColumnName) throws ErrorMessage;
	
	/**
	 * 获取当前行中指定列的布尔值  如果值为"0"返回false  如果值为"1"返回true 不在范围内抛出异常
	 * @param iColumnIndex 列下标
	 * @return 当前行中指定列的布尔值
	 * @throws ErrorMessage
	 */
	public boolean getBoolean(int iColumnIndex) throws ErrorMessage;
	
	/**
	 * 获取当前行中指定列的布尔值  如果值为"0"返回false  如果值为"1"返回true 不在范围内抛出异常
	 * @param sColumnName 列下标
	 * @return 当前行中指定列的布尔值
	 * @throws ErrorMessage
	 */
	public boolean getBoolean(String sColumnName) throws ErrorMessage;
	
	/**
	 * 获取当前数据集是否存在制定字段
	 * @param sColumnName  字段名
	 * @return
	 * @throws ErrorMessage
	 */
	public boolean existColumn(String sColumnName) throws ErrorMessage;
	
	/**
	 * 将光标从当前位置向前移一行
	 * @return 如果存在下一行则返回 true；如果不存在下一行则返回 false  
	 */
	public boolean next();
	
	/**
	 * 将光标从当前位置向上一行 
	 * @return 如果存在上一行返回true;如果不存在上一行返回false
	 */
	public boolean previous();

	/**
	 * 将光标移动到第一行之前
	 */
	public void beforeFirst();
	
	/**
	 * 将光标移动到最后一行之后
	 */
	public void afterLast();
	
	/**
	 * 将光标移动到第一行
	 * @return 如果记录集为空返回false,否则返回真
	 */
	public boolean first();
	
	/**
	 * 将光标移动到最后一行 
	 * @return 如果记录集为空返回false,否则返回真
	 */
	public boolean last();
	
	/**
	 * 将光标移动到指定行
	 * @param row 行下标
	 * @return 如果存在指定下标行返回true,否则返回false
	 */
	public boolean absolute(int row);
	
	/**
	 * 获取当前访问行编号 
	 * @return 当前访问行编号,如果不存在返回-1
	 */
	public int getCurrentRow();
	
	/**
	 * 是否为空
	 * @return
	 */
	public boolean isNull();
	
	/**
	 * 返回行数
	 * @return 二维表行数
	 */
	public int size();
	
	/**
	 *  返回列数
	 * @return 二维表列数
	 */
	public int getColCount();
}
